User Acceptance Testing (UAT):
   It is an end-to-end testing in which testing is done by customer in customer environment (Stagging) is k.a., UAT.

 - It is also k.a., UAT OR Acceptance Testing OR User Acceptance Testing

Usually customer will have 2 environments
  (a) Staging OR pre-production OR Dummy
  (b) Production OR PROD environment

Once final testing is completed and the s/w is ready for the release, then we place all the deliverables into FTP machine & sendout a mail (Release mail) to the customer. 


Q: What is Deliverables?
Ans: Any artifacts which will be shared with the customer is k.a., Deliverables.


Common Deliverables would be:
1. Software (It consist of Source Code(.jar files), pages/jsp (.war file) & DB tables (.sql files))
2. Release Note Doc
3. Installation Guide Doc
4. Consolidated Test Execution Report
5. Consolidated Defect Report



The Release Mail includes:
(a) FTP server name/IP address
(b) Credentials
(c) Location in which deliverables are kept
(d) List of deliverables kept in FTP machine.



Whenever we make a release to the customer, the customer will install the s/w in staging environment by following the installation guide doc. Once the installation/deployment of s/w is done, they will perform one round of end-to-end testing in staging environment which is k.a., UAT.


Q: What are the types of System Testings?
Ans:
1. System Testing: 
   - It is an End-to-End testing
   - It is done by QA in testing environment.
   - Actual customer business scenarios are tested
2. UAT: 
   - It is an End-to-End testing
   - Its done by customer in staging environment
   - Actual customer business scenarios are tested


During UAT testing in staging Environment, If UAT goes fine then the same s/w will be moved to PROD environment. But If customer finds any defects in UAT then they will reject the release & the defect will be escalated to the company.


Q: What is defect Leakage?
Ans: Finding the defects by the customer in customer environment which was missed out by the QA is k.a., Defect Leakage.


Q: How to handle the customer escalations ?
Ans: 
I. Check whether the issue is part of the current release scope
  Ans: If No, then you just update the issue with below comments:
  "This issue will be addressed in the next upcoming release as it is not part of the current release"
  But If the answer is Yes, then perform 2nd step.

II. Try to replicate/reproduce the same issue in QA environment.
  Ans: If No, then update the issue with below comments:
  "The issue is not reproducible in QA environment. Hence closing the defect". Also provide screenshot OR server logs to proove the same.
    But If the issue is reproducible in QA environment then we need to perform 3rd step.

III. Check whether Test cases are written & selected for testing.

   If No, then you will asked to write the testcases for the same feature.
   If Yes, Action will be taken against the QA.


Different ways of doing UAT:
1. Done by customer/End User
2. Done by customers customer (Inherent Acceptance Testing)
3. Done by QA.


1. Done by customer: It is the widely used scenario. When we make a release to the customer, the customer will deploy the s/w in staging environment & perform UAT.



2. Done by customers customer: In some business scenario's the UAT will be done by customer's customer.
EX: KSRTC has given requirement to wipro for developing online bus reservation s/w. Wipro has developed the s/w, tested it & now making a release to the KSRTC.
   The KSRTC will not perform UAT instead they will give the s/w to the outlet dealers who are the customer of the KSRTC where they are also booking KSRTC buses.
   Once the s/w is given to outlet, they will start using the s/w for booking the KSRTS buses. When they are using the s/w If they find any defects it will be reported back to KSRTC. 
   KSRTC consolidate all the complaints form their customers & send it to wipro as a UAT defects. This is k.a., Inherent Acceptance Testing.



3. Done by QA: It is not recommended. If situation demands QA has to do UAT by following "User Acceptance Life Cycle":

1. Identify the need for UAT
	|
	V
2. Get customer approval 
	|
	V
3. Write UAT test cases.
	|
	V
4. UAT test case review
    (a) Internal Review (Done by BA, Dev & Peer)
    (b) External Review (Done by customer)
	|
	V
5. QA should fix all the review comments, baseline the test cases and store the test cases in test case repository.
Ex: ALM, JIRA, Share POint, Dedicated server etc
	|
	V
6. Whenever Release comes, select the UAT test cases & execute them in Customer staging environment.

Ex: 
(a) Through RDC (Remote Desktop Connection) access the customer staging environment & perform the testing.
(b) If it is a web application OR Client server application then access the s/w which is deployed in staging environment through the URL.
